The present invention relates to the visualization and display of three-dimensional scenes or objects on a computer system, and in particular to a new method and apparatus for accelerating the display of three-dimensional scenes. "Visualization" broadly refers to all of the steps taken by a graphics display system from accessing the 3D graphics data (of a scene or object) to rendering the data as a scene on a display device.
There are three basic types of 3D data visualization carried out by computer systems today: (1) geometry (polygon) rendering (such as wire frame rendering); (2) volume rendering; and (3) 3D texture mapping, which will typically include some features of geometry rendering. The present invention is directed specifically towards more rapid texture mapping than is available with conventional systems. For an extended treatment on methods of graphics visualization, see Foley, van Dam, et al., Computer Graphics--Principles and Practice (2d Ed. 1990 Addison Wesley), incorporated herein by reference.
In conventional systems, a graphics application executing on a processor will generate three-dimensional data representing an object or scene for display on a computer monitor or other display or output device. 3D geometry data are typically processed in the processor under the control of the graphics application. If the system includes a graphics accelerator, the processed data are then sent to the graphics accelerator for rendering on the monitor.
3D texture mapping is an intermediate visualization combining data from geometry rendering and volumetric data from volume rendering. Volumetric data at its simplest is simply a set of 3D pixels (discrete color values), normally referred to as "voxels". Conventional 3D texture mapping can also be combined with arbitrary cutting or clipping to reveal hidden structures within the voxel data.
Texture mapping in three dimensions is typically quite a time-consuming process. If the main processor of a computer or other processor-based system is used to carry out the rendering procedures, this can considerably degrade the performance of the system, which typically uses the processor for many other functions and processes. Dedicated graphics controllers and accelerators have been developed which can speed up the rendering procedures, but they are generally quite expensive, so that fully equipping a system with dedicated graphics modules can be prohibitive.
Some systems in use today utilize a dedicated pixel bus (a special memory bus just for the pixel data) with an extra memory controller in order to speed up the rendering/display procedure, but this increases the cost and complexity of the system.
Thus, in conventional systems a choice must be made to stress either the low cost or the high performance of the architecture.
A system is needed that answers both of these challenges--speed and expense. Ideally, a system would be provided that provides the high performance of dedicated graphics modules with the lower cost of general-purpose processors.